#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
/*
 * @lc app=leetcode.cn id=91 lang=cpp
 *
 * [91] 解码方法
 */

// @lc code=start
class Solution {
public:
    int numDecodings(string s) {
        // unordered_map<string, char> mapper;
        // for (int i = 1; i <= 26; i++) {
        //     mapper.insert({to_string(i), 'A' + i - 1});
        // }
        vector<int> dp(s.length() + 1, 0);
        dp[0] = 1;
        for (int i = 1; i <= s.length(); i++) {
            if (s[i - 1] > '0' && s[i - 1] <= '9') dp[i] = dp[i - 1];
            if (i > 1 && s[i - 2] != '0' && ((s[i - 2] - '0') * 10 + (s[i - 1] - '0') <= 26)) dp[i] += dp[i - 2]; 
        }
        return dp[s.length()];
    }
};
// @lc code=end

